/**
 * List页面Keep-Alive状态管理Mixin
 * 用于处理dataManagement下所有list页面的筛选状态保持和重置
 */
export default {
  data() {
    return {
      shouldResetFilters: false // 筛选条件重置标记
    }
  },

  beforeRouteEnter(to, from, next) {
    next((vm) => {
      // 如果是从其他dataManagement list页面导航过来的，重置筛选条件
      if (
        from.path.indexOf('/dataManagement') > -1 &&
        from.path.indexOf('/list') > -1 &&
        from.path !== to.path
      ) {
        vm.shouldResetFilters = true
      }
    })
  },

  activated() {
    // 如果需要重置筛选条件
    if (this.shouldResetFilters) {
      this.resetListFilters()
      this.shouldResetFilters = false
    }
  },

  methods: {
    /**
     * 重置筛选条件的方法
     * 子组件需要重写这个方法来定义具体的重置逻辑
     */
    resetListFilters() {
      if (this.defaultParameter) {
        // 如果子组件定义了defaultParameter，使用它来重置
        this.parameter = { ...this.defaultParameter }
      } else {
        // 否则使用通用的重置逻辑
        this.parameter = {
          ...this.parameter,
          pageIndex: 1,
          pageSize: 10
        }
        // 清空所有字符串类型的筛选字段
        Object.keys(this.parameter).forEach((key) => {
          if (
            typeof this.parameter[key] === 'string' &&
            key !== 'pageIndex' &&
            key !== 'pageSize'
          ) {
            this.parameter[key] = ''
          }
        })
      }

      // 重新获取数据
      if (
        this.getList &&
        typeof this.getList === 'function'
      ) {
        this.getList()
      }
    }
  }
}
